package com.study_online.service;

import com.study_online.domain.*;

/**
 * @author 张天霸
 */
public interface ForumService {

    /**
     * 发表帖子
     * @param forumFatherPost
     * @return
     */
    ResultInfo publish(ForumFatherPost forumFatherPost);

    /**
     * 查看帖子（分页，模糊查询）
     * @param pageNum
     * @param pageSize
     * @param forumFatherPost
     * @return
     */
    ResultInfo selectForumFatherPostByCondition(Integer pageNum, Integer pageSize, ForumFatherPost forumFatherPost);

    /**
     * 收藏帖子
     * @param collectedId
     * @return
     */
    ResultInfo collect(Integer collectedId);

    /**
     * 取消收藏
     * @param collectedId
     * @return
     */
    ResultInfo cancelCollect(Integer collectedId);

    /**
     * 修改帖子
     * @param forumFatherPost
     * @return
     */
    ResultInfo update(ForumFatherPost forumFatherPost);

    /**
     * 发表回帖
     * @param forumChildPost
     * @return
     */
    ResultInfo replyPost(ForumChildPost forumChildPost);

    /**
     * 查看回帖（分页）
     * @param pageNum
     * @param pageSize
     * @return
     */
    ResultInfo selectForumChildPost(Integer pageNum, Integer pageSize);

    /**
     * 评论回帖
     * @param forumComments
     * @return
     */
    ResultInfo comment(ForumComments forumComments);

    /**
     * 点赞
     * @param likeId
     * @param likeType
     * @return
     */
    ResultInfo like(Integer likeId, String likeType);

    /**
     * 取消点赞
     * @param likeId
     * @param likeType
     * @return
     */
    ResultInfo cancel(Integer likeId, String likeType);

    /**
     * 点踩
     * @param dislikeId
     * @param dislikeType
     * @return
     */
    ResultInfo dislike(Integer dislikeId, String dislikeType);

    /**
     * 取消点踩
     * @param dislikeId
     * @param dislikeType
     * @return
     */
    ResultInfo cancelDislike(Integer dislikeId, String dislikeType);

    /**
     * 查看评论（分页）
     * @param pageNum
     * @param pageSize
     * @return
     */
    ResultInfo selectComment(Integer pageNum, Integer pageSize);


    /**
     * 回复评论
     * @param forumReply
     * @return
     */
    ResultInfo reply(ForumReply forumReply);

    /**
     * 查看回复（分页）
     * @param pageNum
     * @param pageSize
     * @return
     */
    ResultInfo selectReply(Integer pageNum, Integer pageSize);

    /**
     * 删除回复
     * @param replyId
     * @return
     */
    ResultInfo deleteReply(Integer replyId);

    /**
     * 删除帖子（包含删除所有连带回帖、评论、收藏、点赞、点踩）
     * @param fpId
     * @return
     */
    ResultInfo deleteForum(Integer fpId);

    ResultInfo findForumByPostTypeId(int postTypeId);

    ResultInfo findAllForum(Integer pageNum, Integer pageSize);
}
